import os
from celery import Celery
from celery.schedules import crontab

# 初始化Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'boss_backend.settings')

app = Celery('boss_backend')
# 从Django配置中读取Celery配置
app.config_from_object('django.conf:settings', namespace='CELERY')
# 自动发现任务
app.autodiscover_tasks()
# 强制设置并发模式（覆盖任何默认配置）
app.conf.update(
    task_pool='solo',
    worker_concurrency=1,
    broker_connection_retry_on_startup=True,  # 解决之前的警告
)

# 定时任务配置
app.conf.beat_schedule = {
    # 日统计：每天凌晨2点执行（统计前一天数据）
    'daily-stats': {
        'task': 'datastats.tasks.run_daily_stats',
        'schedule': crontab(hour=2, minute=0),
    },
    # 周统计：每周一凌晨3点执行（统计上一周数据，周日为统计日期）
    'weekly-stats': {
        'task': 'datastats.tasks.run_weekly_stats',
        'schedule': crontab(day_of_week=1, hour=3, minute=0),
    },
    # 月统计：每月1号凌晨4点执行（统计上一个月数据，月底最后一天为统计日期）
    'monthly-stats': {
        'task': 'datastats.tasks.run_monthly_stats',
        'schedule': crontab(day_of_month=1, hour=4, minute=0),
    },
}